本日重點與方向 (TAG): Grafana、Open Source Dashboard、DataSource、Alert、Monitoring、Notification、Telegram Bot、Line Bot、Webhook。
先前因為老師推說要去參加通訊大賽 (Mobile Hero) 的比賽 (2018 的),所以有緣接觸到研華科技 Adventech
(後面還跑去內湖總公司那邊一趟搞比賽)的 Wise PaaS,因為 Wise PaaS 的 Web UI 端是基於 Grafana 去改造的 (印象中研華有開幫忙搞 Grafana 套件的實習,看別人文章提的),後面研華就基於 Grafana 那個架構添加一些專有的 Plugin,印象中主要是往工業類控制與場域環控部分去開發,當然還有一些自動化生產的廠房環境設備去監控,可能是需要一些新的想法,所以研華就去參加了通訊大賽的比賽贊助(推論的),我們那時候做了一些機房環控的資料搞上去 Dashboard 之上,因為 Grafana 的一堆坑在 MongoDB (沒錯,Grafana 不支援 MongoDB) 那時候的後端開的服務在研華機房,就踩坑到死的在尋找 MongoDB on Grafana 的一些做法,為了當時能夠搞定 MongoDB 的問題,我們就自建了一下 Grafana,那時候也感謝研華那邊的技術支援給後台權限去裝套件,最後轉上去 Wise PaaS 的 Web UI 去顯示也成功,但是就從那個時候開始,也就結下了 Grafana 的不解之緣,那時候測試大概是在 5.7 的版本,因為 Grafana 跳版本的時候有一些 Dashbord 遷入的問題導致 Web UI 畫面有可能會有區塊異常的錯誤,這邊基本上都是起6.7.4
版本,現在 Grafana 也長大到 7.0 版了,對於整個 Web UI 有重整過一些功能與整合套件,也算是大家越來越好用的 DashBoard 沒有之一了吧。
sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana
sudo systemctl enable grafana-server.service
壞掉或是網頁不通就先來這邊開服務看壯態。
sudo service grafana-server start
sudo service grafana-server restart
sudo service grafana-server status
http://:3000,預設帳號密碼都是 admin
都是去
/etc/grafana/grafana.ini
裡面去改。
#################################### Anonymous Auth ######################
[auth.anonymous]
# enable anonymous access
enabled = true
# specify organization name that should be used for unauthenticated users
;org_name = Main Org.
# specify role for unauthenticated users
org_role = Viewer
# set to true if you want to allow browsers to render Grafana in a <frame>, <iframe>, <embed> or <object>. default is false.
allow_embedding = true
查資料之前都需要連結一下資料庫,這邊 Grafana 對於資料庫連結稱為
DataSource
,你需要先配置一下後面才可以查資料,Grafana 允許多個資料庫與多種連線連結,所以就看自己的配置去添加。
Data Source Name 就是你之後去查詢時可以選擇資料庫查資料的識別名稱,設定過後先按一下
Save & Test
,確認可以連線後再返回。
這邊允許多組查詢,對應到不同的圖表需求之上。
這邊可以調整一些顯示方式,如加球球、數據連線、長條圖、多數據放在同一張圖之上 (這需要資料庫多個查詢達成)、最新數據+繪圖
印象中新版本會因為安全性問題,還有因為一些遷入網頁變成攻擊行為的問題,會先把遷入的功能關掉,所以要改的話要去找一下怎麼改 grafana.ini
這邊的文字有支援
html
、markdown
就讓大家自己去運用吧。
這個表格欄位部分,它會自動幫你用你的 SQL 中查出來的欄位名稱去帶,需要改的話就去
as XXX
去改。
這邊主要是提供忒你快速切換你的 Dashboard 使用
這功能就是可以把你的一些 Dashboard 的 Block 塞在一個 Row 之下,他們就可以變成一個可以收縮選擇性的檢視區塊。
當你有很多的 Dashboard 分別在搞不同的監控時,又需要看到每一個 Dashboard 狀態時,就用這個功能去做輪播,需要的就把它加進去,之後設定 Dashboard 檢視的延遲跳轉時間。
Grafana 可以讓你有一些基礎的權限配置,讓使用者在不同的組織、帳戶之下,具有一下不同的權限可以檢閱或是編輯 Dashboard。
做軟體業基本上是最需要版本控制的,別人亂搞一下東西就全壞掉真的難過,Grafana 這邊有幫你搞一下版本控制的歷史,你有改過保存起來就會存在這邊,你也可以針對特定版本進行回復的行為,也算是好用的功能。
前面講的版本恢復,他是基於我們的 Dashboard 存在的狀態下去做恢復的,而今天你的 Server 直接死給你看,基本上以傳統的 Web 要恢復的話,我們主要是對於專案重新啟動去吃頁面的 HTML、PHP 頁面等等的,而對於 Grafana 部分,則是你需要在你的一個版本之上的 Dashboard 配置完成後,將他的頁面資料的 JSON 複製到本機端,這樣下次恢復環境時,把你的 Data Source 添加回去,再 import 這個 Dashboard 的檔案,他就會全部跑回來了。
這邊你就要去設定你的一些告警的對外發送的端點,Line Bot / Telegram Bot 的話就是給一下機器人 ID、Secret,Webhook 就給 API,有需要的就去下拉選裡面選一下,他會跟你說你所需要填入的資訊與相關的內容,之後再綁定這些告警的方式到你的數據檢視的 Dashboard 的區塊端即可。
這邊設定完的話,可以按下
Send Test
做一下測試,他會幫你發送一下測試的告警。
純數據顯示的印象中不支援,只有支援這種有時間序的繪圖。
這邊設定完成的話,可以按一下
Test Rule
,就會以你設定的對外發報方式,將你的告警內容傳遞到你的接收端去,測試完成之後基本上就算是設定成功了。
這個套件是用 Node.js 搞出來的,所以要裝一下 npm 到你的機器之上。
git clone https://github.com/JamesOsgood/mongodb-grafana.git /usr/lib/grafana/plugins
cd /usr/lib/grafana/plugins
npm install
nohup npm run server > mongodb-grafana.log 2&>1 &
service grafana-server restart
這邊他是用代理的方式幫你去打 Mongodb,所以一定把 HTTP URL 改成
http://127.0.0.1:3333
,真正的 MmongoDB 連結就放置在 MongoDB URL 那邊,然後因為他是外掛套件,所以有一些功能不支援,比如說: 數據繪圖時,你的圖表無法即時看到數據變動,進會有繪圖資料(通常是你滑鼠在圖表上移動,數據會因為時間不同而改變)、Alert 對於即時數據的檢查與告警。